package server.grupo.configuracion.general;

import persistencia.dominio.*;

import java.sql.Connection;
import java.util.*;

import persistencia.*;
import server.Control;
import server.aula.ControlAula;
import comun.constantes.*;
import comun.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */
public class ControlConfiguracionGralHome extends ControlConfiguracionGralTodos {

  public ControlConfiguracionGralHome(Persistencia persistencia) {
	  super(persistencia);
  }

  public ControlConfiguracionGralHome(Connection conexion) {
	  super(conexion);
  }

  public ControlConfiguracionGralHome(Persistencia persistencia, Connection conexion) {
	    super(persistencia,conexion);
  }
  
public Boolean consultarHerramientasDelHome(Long idAula,String estado ){
	try {
		System.out.println("------------------------------------------Estado:"+estado);
		//	Aula o Comision
		Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
		ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();
//		Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
		if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
		
		return configuracionGrupoAula.getConfiguracionGralHerramientas();		
	} catch (MyException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	}
}
  

  /**
 * @param idAula
 * @return
 */
public Boolean consultaConfiguracionGralAulaOComision(Long idAula, String estado){
		try{
			System.out.println("------------------------------------------Estado:"+estado);
			  //Aula o Comision
			  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
			  ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();
			  
			  //Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
			  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
				
			  if(this.consultaConfiguracionGralAtributosGrupo(configuracionGrupoAula).equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL) &&
					  configuracionGrupoAula.getConfiguracionGralHerramientas().booleanValue()){
				  
				  return TIPO_CONFIGURACION_DE_GRUPOS.GENERAL;
				  
			  }else return TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR;
		}catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
  }

/**
 * @param idAula
 * @return
 */
public Boolean consultaConfiguracionGralHome_HayAlgoGral(Long idAula,String estado){
		try{
			System.out.println("------------------------------------------Estado:"+estado);
			  //Aula o Comision
			  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
			  ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();
			  //Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
			  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
			  
			  if(this.consultaConfiguracionGralAtributosGrupo(configuracionGrupoAula).equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL) ||
					  configuracionGrupoAula.getConfiguracionGralHerramientas().booleanValue()){
				  
				  return TIPO_CONFIGURACION_DE_GRUPOS.GENERAL;
				  
			  }else return TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR;
		}catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
  }
    
  public void atributosGrupoConfiguracionDelHome(Long idAulaOComision,Grupo grupo, String estado,
		  							boolean recursosQuitados_EstandarNuevas,Long idAula){
	  	try {
	  		System.out.println("------------------------------------------Estado:"+estado);
	  		//Aula o Comision
	  		Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAulaOComision);
	  		ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();
//	  	Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
			if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
			
  			this.controlandoAtributosGrupoPorConfiguracionDelHome(configuracionGrupoAula.getId(),grupo);
  			
  			super.pasarAParticularOGeneralConfiguracionGralTodosAtributos(idAula,estado,TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR);
  			
  			if(recursosQuitados_EstandarNuevas){
  				//Paso a PARTICULAR lo de TODOS 
  				super.pasarAParticularOGeneralConfiguracionGralTodosHerramientas(idAula,estado,TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR);
  			}
	  		
	  	}catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
  }
    
  public void herramientasDelHome(Long idAulaOComision, String estado, Long idAula){
	  try {
		  System.out.println("------------------------------------------Estado:"+estado);
		  //Aula o Comision
		  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAulaOComision);
		  ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();	

		  //Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
		  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
		  
		  configuracionGrupoAula.setConfiguracionGralHerramientas(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL);
		  
		  super.pasarAParticularOGeneralConfiguracionGralTodosHerramientas(idAula,estado,TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR);
		  
	  }catch (MyException e) {
		  // TODO Auto-generated catch block
		  e.printStackTrace();
	  }
  }  
  
  public Grupo levantandoConfiguracion(Long idAula,Grupo grupoDeLosConfigurados, String estado, boolean esDeTodos){
	  try {
		  System.out.println("------------------------------------------Estado:"+estado);
//		  Aula o Comision
		  System.out.println("ID AULA en levantandoConfiguracionDelHome: "+idAula);
		  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
		  ConfiguracionGrupo configuracionGrupo = null;
		  ConfiguracionGrupo configuracionGrupoParaMostrarDatos = null;
		  if(esDeTodos){
			  	configuracionGrupo = aula.getConfiguracionGrupoTodos();
			  	configuracionGrupoParaMostrarDatos = aula.getConfiguracionGrupo();
//				Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
				if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0){
					configuracionGrupo = aula.getConfiguracionGrupoBorradorTodos();
					configuracionGrupoParaMostrarDatos = aula.getConfiguracionGrupoBorradorTodos();
				}
		  }else{
			  	configuracionGrupo = aula.getConfiguracionGrupo();
//				Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
				if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupo = aula.getConfiguracionGrupoBorrador();
				
				configuracionGrupoParaMostrarDatos = aula.getConfiguracionGrupo();
		  }		  
		  
		  if(configuracionGrupo == null){
			  ConfiguracionGrupo configuracionGrupo2 = new ConfiguracionGrupo();
			  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)aula.setConfiguracionGrupoBorrador(configuracionGrupo2);
			  else aula.setConfiguracionGrupo(configuracionGrupo2);
			  return null;
		  }
		  if(configuracionGrupoParaMostrarDatos == null)configuracionGrupoParaMostrarDatos = configuracionGrupo;
			  
		  Grupo grupo = new Grupo();
		  
		  //CUPO
		  if(configuracionGrupo.getConfiguracionGralAtributoCupo().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  grupo.setMaxCantIntegr(configuracionGrupoParaMostrarDatos.getAtributoGralCupo());
		  } 
		  //CURIOSO
		  if(configuracionGrupo.getConfiguracionGralAtributoCurioso().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  grupo.setCurioso(configuracionGrupoParaMostrarDatos.getAtributoGralCurioso());
		  }
		  //MULTIGRUPO
		  if(configuracionGrupo.getConfiguracionGralAtributoMultigrupo().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  grupo.setMultiGrupos(configuracionGrupoParaMostrarDatos.getAtributoGralMultigrupo());
		  }
		  //PROHIBIDO
		  if(configuracionGrupo.getConfiguracionGralAtributoProhibido().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  grupo.setProhibido(configuracionGrupoParaMostrarDatos.getAtributoGralProhibido());
		  }		
		  //RECHAZADO
		  if(configuracionGrupo.getConfiguracionGralAtributoRechazado().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  grupo.setRechazado(configuracionGrupoParaMostrarDatos.getAtributoGralRechazado());
		  }
		  //TIPO
		  if(configuracionGrupo.getConfiguracionGralAtributoTipo().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  TipoGrupo tipoGrupo = (TipoGrupo)persistencia.getObjectosPorClaseYFiltro("persistencia.dominio.TipoGrupo","descripcion ==\""+configuracionGrupoParaMostrarDatos.getAtributoGralTipo()+"\"").elementAt(0);
			  grupo.setTipoGrupo(tipoGrupo);
		  }
		  //HERRAMIENTAS
		  if(configuracionGrupo.getConfiguracionGralHerramientas().equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL)){
			  if(grupoDeLosConfigurados!=null)
				  grupo.setConfigurados(grupoDeLosConfigurados.getConfigurados());
		  }
		  
		  return grupo;
	  } catch (MyException e) {
		  // TODO Auto-generated catch block
		  e.printStackTrace();
		  return new Grupo();
	  }  		
  }   

}